/* 
 * controlLista.js file
 */
$().ready(function(){
    
    //Controlo si es una edicion de lista actual o si es creacion de listas
    if ( namespace.listaActual != undefined ){
        $('.crearLista_opciones').find('h1').text("Editar Lista Actual");
        $('.crearLista_opciones').find('ul').hide();
        $('.crearLista_formulario').find('h1:first').text("Lista actual: "+namespace.listaActual.nombre);
        $("input:radio").attr("disabled", true);
        $('#nombre').attr("disabled", true);
        namespace.lista = namespace.listaActual;
        traerYMostrarLista();
    }
    
    $("input:radio").change(function(){
        if ( $(this).val() == "si") {
            $('.crearLista_bloqueCompartido').fadeIn();
        }else{
            $('.crearLista_bloqueCompartido').fadeOut();
        }
    });
    
    $('.crearLista_Agregar').click(function(){
        agregarModificarLinea(true);
    });   
    
});

function nuevaLista(){
    namespace.lista = new ListaCompra();
    namespace.lista.propietario = namespace.usuario;
    namespace.lista.lineas = new Array();
    limpiarInputsArticulos();
    $('.crearLista_articulos').html("");
    $('.crearLista_formulario').fadeIn();    
}

function nuevaListaBasadaEnOtra(){
    $('.listasAnteriores').fadeIn();
    $('.crearLista_formulario').fadeOut();
    $('.crearLista_articulos').html("");
    $.ajax({
              type: 'POST',
              url: 'php/MainController.php?accion=getListasCompras',
              data: null,
              dataType: 'json',
              success: responseNuevaListaBasadaEnOtra
         });    
}

function responseNuevaListaBasadaEnOtra(data,a,b){
    if ( data.success == undefined ){
        namespace.listasCompras = data;
        escribirListas(data);         
    }else{
        alert("Mensaje: \n"+data.msj);
    }
}

function escribirListas(data){
    $('.listasAnteriores').html("<center>Seleccione una de las siguientes listas disponibles</center><br/>");
    for ( var i=0; i<data.length; i++ ){
        $('<div class="listasAnterioresLinks">'+data[i].nombre+'</div>')
        .click(function(){
            traerYMostrarListaClonada($(this).text());
        })
        .appendTo('.listasAnteriores');
    }
}

function traerYMostrarLista(){
    var laLista = namespace.lista;
    $.each(laLista.lineas,function(i, value){
        $('#descripcion').val(value.articulo.nombre);
        $('#cantidad').val(value.cantidad);
        agregarModificarLinea(false);
    });
    $('#nombre').val(namespace.lista.nombre);
    $('.listasAnteriores').fadeOut();
    $('.crearLista_formulario').fadeIn();
}

function traerYMostrarListaClonada(nombre){
    var lista = traerListaPorNombre(nombre);
    if ( lista == null ) return;
    
    namespace.lista = new ListaCompra();
    namespace.lista.lineas = new Array();
    $.each(lista.lineas,function(i, value){
        $('#descripcion').val(value.articulo.nombre);
        $('#cantidad').val(value.cantidad);
        agregarModificarLinea(true);
    });
    namespace.lista.propietario = namespace.usuario;
    $('.listasAnteriores').fadeOut();
    $('.crearLista_formulario').fadeIn();

    var today = new Date();
    var dd = today.getDate() < 9 ? '0'+today.getDate() : today.getDate()+'';
    var mm = today.getMonth()+1 < 9 ? '0'+(today.getMonth()+1) : (today.getMonth()+1)+'';
    var yyyy = today.getFullYear()+'';yyyy = yyyy.substring(2,4);
    $('#nombre').val(nombre+"_"+dd+mm+yyyy);
}

function agregarModificarLinea(modificarArray){
    $('.index_errores').hide();
    var validacion_error = "Verifique la descripcion y la cantidad.";
    
    var descripcion = $('#descripcion').val();
    var cantidad    = $('#cantidad').val();
    
    if ( esCadenaVacia(descripcion) || !esNumeroPositivo(cantidad) ){
        $('.index_errores').text(validacion_error).fadeIn();
        return;
    }
    
    var elementoEncontrado = null;
    
    $('.articulo_contenedor').each(function(){
        if ( $(this).find(".articulo_descripcion").text() == descripcion ){            
            elementoEncontrado = $(this);
            return;
        }
    })
    
    if ( elementoEncontrado != null ){
        //la linea ya existe
        elementoEncontrado.find(".articulo_cantidad").text(cantidad);
        if ( modificarArray == true ) actualizarLineaEnArray(descripcion,cantidad);
    }else{
        //nueva linea
        if ( modificarArray == true ) agregarLineaEnArray(descripcion,cantidad);
        var elDiv = "<div class=\"articulo_contenedor\">"+
                    "<div class=\"articulo_descripcion\">"+descripcion+"</div>"+
                    "<div class=\"articulo_cantidad\">"+cantidad+"</div>"+
                    "<div class=\"articulo_opciones\"><a href=\"#\" class=\"articulo_modificar\"> Modificar </a> &nbsp; | &nbsp; <a href=\"#\" class=\"articulo_eliminar\"> Eliminar </a></div>";
        $('.crearLista_articulos').append(elDiv)
        .find('.articulo_opciones .articulo_modificar')
        .click(function(){
            $('#descripcion').val( $(this).parent().parent().find('.articulo_descripcion').text() );
            $('#cantidad').val( $(this).parent().parent().find('.articulo_cantidad').text() );
            return false;
        })
        .parent().find('.articulo_eliminar').click(function(){
                //mando a eliminar del array de lineas
                eliminarLineaDeArray($(this).parent().parent().find('.articulo_descripcion').text());                
                $(this).parent().parent().remove();
                limpiarInputsArticulos();                       
                return false;
        })
    }    
    limpiarInputsArticulos();   
}

function crearLista(){
    var password    = $('#password').val();
    var nombre      = $('#nombre').val();
    
    if ( $("input:radio:checked").val() == "si" ){
        if ( !validarPassword(password) ){
            alert("El password es incorrecto");
            return;
        }        
        namespace.lista.compartida = true;                
    }
    
    if ( !validarNombreLista(nombre) ){
        alert("El nombre de la lista es incorrecto");
        return;
    }
    
    namespace.lista.nombre = nombre;
    namespace.lista.password = password;
    //Persistir lista compra    
    $.ajax({
              type: 'POST',
              url: 'php/MainController.php?accion=guardarListaCompra',
              data: namespace.lista,
              dataType: 'json',
              success: responseGuardarListaCompra
         });    
}

function limpiarInputsArticulos(){
    $('#descripcion').val("");
    $('#cantidad').val("");
}

function responseGuardarListaCompra(data,a,b){
    if ( data.success == "false" || data.success == false ){
        alert ( "Error \n"+data.msj );
        return;
    }
    //limpio la lista
    namespace.lista = new ListaCompra();
    $('#nombre').val("");
    $('.crearLista_articulos').html("");
    $('.crearLista_formulario').fadeOut();
    
    //Si viene de edicion notifico
    if ( namespace.listaActual != undefined ){
        $('.crearLista_opciones').find('h1').html('Lista Actual guardada con exito.<br/><a href="ControlListas.php">Volver a control listas</a>');
    }
}